R & Vador

{leaflet}
pour contrôler le monde

A Quoi Sert {leaflet}?

  • Faire des cartes
  •       Espaces geographiques
  •       Caracteristiques liés aux espaces

3 Types de Cartes

  • Ajouter des marqueurs sur des lieux
  • Délimiter des zones geographiques
  • Ajouter des carateriques sur une zone geographique

3 Types de Cartes

  • Ajouter des marqueurs sur des lieux
  • Délimiter des zones geographiques
  • Ajouter des carateriques sur des zones geographiques

3 Types de Cartes

  • Ajouter des marqueurs sur des lieux
  • Délimiter des zones geographiques
  • Ajouter des carateriques sur des zones geographiques

3 Types de Cartes

  • Ajouter des marqueurs sur des lieux
  • Délimiter des zones geographiques
  • Ajouter des carateriques sur des zones geographiques

Les Marqueurs

Syntaxe

  • leaflet(df) %>%
  •     addTiles() %>%
  •     addCircles(lng = ~Long, lat = ~Lat, ...)


  • Lire ~Long comme df$Long
    et ~Lat comme df$Lat

Code associé

library(dplyr)
library(leaflet)

# Creation du dataset
cities <- read.csv(textConnection("
City,Lat,Long,Pop
Luxembourg,49.611010,6.130870,23000
Trier,49.758487,6.645416,6570
Liege,50.629960,5.584612,3221
Bruxelles,50.833535,4.361996,5871
Esch-Sur-Alzette,49.494211,5.980375,9870
Remisch,49.541213,6.365443,3902
"))

# Ajout de l'info dans le popup
cities <- cities %>% 
  mutate(info = paste0('<b>Ville : </b>',City,
                          '<br><b>Clients : </b>',
                          formatC(Pop, big.mark = " ")))

# Creation carte
leaflet(cities) %>% addTiles() %>%
  addCircles(lng = ~Long, lat = ~Lat, 
             weight = 1, radius = ~sqrt(Pop) *100, 
             popup = ~info)

Délimitation Geographiques

Syntaxe

  • leaflet(polygon) %>%
  •     addTiles() %>%
  •     addPolygons( ...)


Code associé

library(rgdal)
library(sf)

# Lecture shp file
communes <- sf::st_read(dsn ="www/LIMADM_COMMUNES.shp", crs = 2169)

# Transformation en polygon
polygon <- st_transform(communes, "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")

# Creation carte
leaflet(polygon) %>% 
  addTiles() %>%
  addPolygons( stroke = TRUE, weight = 0.5, 
    opacity = 0.5, fillOpacity = 0.3,
    highlightOptions = highlightOptions(color = "white", 
                                        weight = 0, 
                                        bringToFront = TRUE)) 

Caractéristiques Geographiques

Syntaxe

  • df_polygon <- broom::tidy(polygon)
  • pal <- colorNumeric(Blues, NULL)

  • leaflet(df_polygon) %>%
  •     addTiles() %>%
  •     addPolygons(fillColor =~pal(pop),
                                                label = ~labels, ...) %>%
  •     addLegend(pal =pal, values = ~pop, ...)

Code associé

# Deja fait
# communes <- rgdal::readOGR("/LIMADM_COMMUNES.shp")
# sp.communes <- spTransform(communes, "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")

# Conversion en dataset
df_polygon <-  geojsonio::geojson_read("www/communes4326.geojson", what = "sp") %>% 
  broom::tidy(.x, region = "COMMUNE")


# Transformation
df_polygon %<>%
  st_as_sf(coords = c("long", "lat")) %>%
  group_by(id) %>%
  summarise(geometry = st_combine(geometry)) %>%
  st_cast("POLYGON") %>% 
  mutate(pop = abs(round(rnorm(124,1700,245))))

# Echelle de couleur
pal <- colorNumeric("Blues", NULL)

# Definir les labels
labels <- paste0("<b>",df_polygon$id, "</b><br>nb clients: ", 
                 formatC(df_polygon$pop, big.mark = " ")) %>% 
  lapply(htmltools::HTML)

# Faire le graphique
leaflet(df_polygon) %>% 
  addTiles() %>%
  addPolygons(stroke = FALSE, smoothFactor = 0.3, fillOpacity = 1,
              fillColor = ~pal(pop),
              label = ~labels ) %>% 
  addLegend(pal = pal, values = ~pop, opacity = 0.7, 
            title = 'Nombre de clients', position = "bottomright") 

Pour aller plus loin

  • Modifier le tooltip

Nombre de biens disponibles par commune

Source

Récapitulatif

{leaflet}

  • Ajouter facilement des marqueurs
  • Faire des cartes de bonnes qualités
  • tooltips/pop-ups très personnalisables

Merci pour votre attention

Questions?